package com.yuw.control;

import com.yuw.bean.UserInfoBean;
import com.yuw.service.IUserInfoService;
import com.yuw.service.impl.UserInfoServiceImpl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

// @Controller注解作用是在springmvc框架下，标注该类是一个控制层（Control层）的类，该类中的方法用于响应客户端发送的请求
@Controller
public class UserInfoControl {

    // 使用spring的ioc进行反转控制，获取service层的实例对象
    @Resource
    IUserInfoService userInfoService;

    /**
     * 用户登录处理
     *
     * @return 给用户展示的视图的路径
     */
    // @RequestMapping 注解，用于标识该方法可以影响那个URI发送过来的客户端请求
    /*
    control层中的方法的参数需要和前台页面form表单的控件的name属性值保持一致，
    这样form表单的值就可以通过类型转换映射到方法的参数列表中；
    当然，Control方法的参数也可以使用实体类来接收前台表单发送的值：要求标签控件的name属性值和实体类的属性名一一对应即可
     */
    @RequestMapping("userLogin")
    public String doUserLogin(UserInfoBean userInfoB) {

        // 返回响应给客户端的视图路径
        // 应为配置了springmvc视图路径解析，所以需要提出视图路径的前缀和后缀，只返回中间部分即可
        // 例如，WEB-INF/pages/logined.jsp 路径，返回 logined 即可

        System.out.println("服务器处理了你的登录请求");
        System.out.println("登录用户名信息：" + userInfoB.toString());
        // 调用service层进行登录业务逻辑处理
        // 调用登录验证方法
        List<UserInfoBean> lstUsers = userInfoService.doUserLogin(userInfoB);
        // 根据查询结果集判断是否进入登录成功页面
        if (lstUsers != null && lstUsers.size() > 0) {
            // 登录成功
            // 跳转到登录成功页面
            return "logined";
        } else {
            // 登录失败
            // 跳转到登录失败页面
            return "index";
        }

    }

    /**
     * 用户登录处理
     *
     * @return 给用户展示的视图的路径
     */
    // @RequestMapping 注解，用于标识该方法可以影响那个URI发送过来的客户端请求
    /*
    control层中的方法的参数需要和前台页面form表单的控件的name属性值保持一致，
    这样form表单的值就可以通过类型转换映射到方法的参数列表中；
    当然，Control方法的参数也可以使用实体类来接收前台表单发送的值：要求标签控件的name属性值和实体类的属性名一一对应即可
     */
    @RequestMapping("userLogin2")
    public String doUserLogin2(String username, String userpsw) {

        // 返回响应给客户端的视图路径
        // 应为配置了springmvc视图路径解析，所以需要提出视图路径的前缀和后缀，只返回中间部分即可
        // 例如，WEB-INF/pages/logined.jsp 路径，返回 logined 即可

        System.out.println("服务器处理了你的登录请求");
        System.out.println("登录用户名：" + username);
        System.out.println("登录密码：" + userpsw);

        return "logined";
    }

    /**
     * 使用ajax进行用于信息查询
     *
     * @param userInfoB 查询参数实体类
     * @return
     */
    @ResponseBody  // 表示handler方法的返回有结果集需要转换为Json字符串
    @RequestMapping("queryUserInfoByAjax")
    public List<UserInfoBean> queryUserInfoByAjax(UserInfoBean userInfoB) {
        System.out.println("查询参数：" + userInfoB.toString());
        // 调用service层进行查询业务逻辑处理，返回结果集
        List<UserInfoBean> lstUsers = userInfoService.queryUserInfoByAjax(userInfoB);
        return lstUsers;
    }

}
